package Modelo;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.util.TreeMap;
import Controlador.FrenoDeManoAutito;

public class Autito  extends Movil {

	private static final long serialVersionUID = 1L;
        private int count,uno=0;
        protected TreeMap<Integer, Integer> teclaCod;  //SACAR!!!
        public boolean carga,flag_auto, ignorar_teclas;
        
        public Autito(Integer id0, Integer x0,Integer y0,Integer w0,Integer h0,Color c,Integer vida, Boolean estado, Escenario e,TreeMap<Integer, Integer> tc){
            super(id0, x0,y0,h0,w0,c,vida,estado,e);
            teclaCod =tc;                   //SACAR!!!
            carga=false; //comiezan descargados
            dx=4;
            dy=4;
            
            ignorar_teclas = false;
            
            
            
            //motor.start();
        }

        /*Metodo para cargar autos*/
        public void setCarga(){
            
                carga=true;
                System.out.print("Autito"+this.id+"se carga");
      	}
        /*Metodo para descargar auto*/
        public void getCarga(){
            
                carga=false;
                System.out.print("Autito"+this.id+"se descarga");
      	}

        
        
        
        /*Metodo para impedir el paso entre objetos*/
        public void rebota() {

            moverse(k,c);
        }
        
        
        
        /*Metodos para el movimiento por teclado*/
      
        /*public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
    public void keyPressed(KeyEvent e) {

    if(!ignorar_teclas){

    try {
    getClass().getMethod("tecla" + teclaCod.get(e.getKeyCode()).toString(),
    (Class[]) null).invoke(this, (Object[]) null);

    escenario.perito.checkCollisions((Autito) this);
    }   catch (Exception ex) {
    }
    }
    }*/

        public void tecla0(){            
            arriba();
           
        }
        public void tecla1(){
            abajo();
        }
        public void tecla2(){
            izquierda();
        }
        public void tecla3(){
            derecha();
        }

        @Override
	public void dibujar(Graphics g){

                g.setColor(color);
                k=x;c=y;
                g.fillRect(x, y, ancho, alto);
      	}
        
        /*Metodos de colision*/
        @Override
        public void colision(Figuras figura) {    
        } 

	@Override
	public synchronized void colision(Autito a) {
            a.rebota();
	}

        @Override
        public void colision(Pared pared) {
        }
     
        @Override
    public synchronized void colision(Policia poli) {
    
            
     
        int xAux=poli.x;  //posiciones al chocar
        int yAux=poli.y;

        poli.x-=(poli.x-poli.xAnterior)*5;
        poli.y-=(poli.y-poli.yAnterior)*5;

        poli.xAnterior=xAux; //posiciones antes del choque
        poli.yAnterior=yAux;

        poli.dx = poli.dx*(-1);
        poli.dy = poli.dy*(-1);

        
        escenario.arbitro.CheckAll(this);
        
    }

        
}